Computer systems typically comprise a combination of hardware, such as semiconductors, transistors, chips, and circuit boards, and computer programs. As increasing numbers of smaller and faster transistors can be integrated on a single chip, new processors are designed to use these transistors effectively to increase performance. Currently, many computer designers opt to use the increasing transistor budget to build ever bigger and more complex uni-processors. Alternatively, multiple smaller processor cores can be placed on a single chip, which is beneficial because a single, simple processor core is less complex to design and verify. This results in a less costly and complex verification process, as a once verified module, the processor, is repeated multiple times on a chip.
A technique known as multiple logical partitions take advantage of multi-processors. A logically partitioned computer comprises multiple logical partitions that implement virtual computers, which execute in separate memory spaces, may execute separate operating systems, and may use shared resources. Examples of shared resources are processors, memory, co-processors, network bandwidth, or secondary storage. One technique for allocating processors to partitions is to use virtual processors, which are representations of physical processor cores to the operating system of a logical partition that uses shared processors.